File information: | |
File name: | BFS.mesa_Oct77.pdf [preview BFS.mesa Oct77] |
Size: | 233 kB |
Extension: | |
Mfg: | xerox |
Model: | BFS.mesa Oct77 🔎 |
Original: | BFS.mesa Oct77 🔎 |
Descr: | xerox mesa 3.0_1977 listing BFS.mesa_Oct77.pdf |
Group: | Electronics > Other |
Uploaded: | 24-02-2020 |
User: | Anonymous |
Multipart: | No multipart |
Information about the files in archive: | ||
Decompress result: | OK | |
Extracted files: | 1 | |
File name BFS.mesa_Oct77.pdf brs.mesa 24-0CT-77 21:16:31 Page 1 -- BFS.Mesa Edited by Sandman on August 23, 1977 9:47 PM DIRECTORY AltoDers: FROM "altodefs", AltoFileDers: FROM "altofiledefs", BFSDefs: FROM "bfsdefs", DiskDefs: FROM "diskdefS"' DiskKDDefs: FROM "diskkddefs", InlineDefs: FROM "inlinedefs", MiseDers: FROM "miscdefs", SegmentDefs: FROM "segmentdefs", StringDefs: FROM "stringdefs"; DEFINITIONS FROM AltoDefs, AltoFileDefs, DiskDefs; BFS: PROGRAM IMPORTS DiskDefs, D1skKDDefs, MiseDers, SegmentDefS' StringDefs EXPORTS BFSDefS = BEGIN -- These should be POINTER TO ARRAY OF ... CAvee: TYPE = DESCRIPTOR FOR ARRAY OF POINTER; DAvee: TYPE = DESCRIPTOR FOR ARRAY OF vDA: AetOnPages: PUBLIC PROCEDURE [arg:POINTER TO update DiskRequest] RETURNS [page:PageNumber, bytes:CARDINAl] = BEGIN OPEN arg, DiskDefs; a: vDC; dde: DOC: i: PageNumber; eb, nexteb: CBptr; ebzone: ARRAY [0 .. lCBZ) OF UNSPECIFIED; zone: CBZptr = @cbzone[O]: CAs: CAvee = DESCRIPTOR[ea,lastPage+l]; DAs: DAvee = DESCRIPTOR[da,lastPage+2]; InitializeCBstorage[zone,nCB,firstPage,elear]; zone. info ~ da; zone.eleanup ~ cleanup; BEGIN ENABLE RetryableDiskError =) RETRY: eb ~ GetCB[zone,elear I ANY =) ERROR]: FOR i ~ zone.eurrenLPage, 1+1 UNTIL i=lastPage+1 DO BEGIN -- inner compound to skip DoNothing pages a ~ IF i=lastPage THEN lastAetion ELSE action; IF a = DoNothing THEN GOTO SkipThisPage; IF DAs[i] = eofDA THEN EXIT: IF signalCheckError AND zone.errorCount = RetryCount/2 THEN SIGNAL DiskCheckError[i]; nexteb ~ GetCB[zone,clear]; cb. labelAddress ~ IF DAs[i+l] = fillinDA THEN lOOPHOlE[@nexteb.header.diskAddress] ELSE @nextcb.label: dde ~ DDC [ eb,IF fixedCA THEN ea ELSE CAs[i],DAs[i],i,fp,FAlSE,a]; DoDiskCommand[@dde]: eb ~ nexteb; EXITS SkipThisPage =) NUll; END: ENDlOOP; CleanupCBqueue[zone]; END; -- of enable bloek RETURN[i-1,zone.eurrentBytes] END: GetNextDA: PUBLIC PROCEDURE [eb:CBptr] = BEGIN pn: PageNumber = eb.page; DAs: DAvee = DESCRIPTOR[cb.Lone.info,pn+2]; Ir DAs[pn+l] = fillinDA TH[N DA~[pn+1] ~ VirtualDA[cb.labelAddress.next]; rr DAs[pn-t] = fillinDA THrN DAs[pn-1] ~ VirtualDA[cb. labelAddress.prev]; RETURN [NO; bfs.mesa 24-0CT-77 21:15:31 Page Z -- Currently OiskRequest.aetion is not used by WritePages (WriteO is assumed). -- Note also that lastAetion is used only if lastPage isn't being rewritten. WritePages: PUBLIC PROCEOURE [arg:POINTER TO extend DiskRequest] RETURNS [page:PageNumber, bytes:CAROINAl] = BEGIN aop: update DiskRequest: firstNewPage: PageNumber: local: extend OiskRequest ~ argt: DAs: OAvee = OESCRIPTOR[arg.da,arg.lastPa |
Date | User | Rating | Comment |